<?php
App::uses('AppController', 'Controller');

class UsersController extends AppController {

	public function admin_index() {

		//$users = $this->User->find('all');
		//$this->set(array(
		//	'users' => $users,
		//));

		$this->paginate = array(
			'limit' => 20,
			'order' => 'id ASC',
		//'conditions' => array([...]),
		);

		// array ở trên này nhìn giống giống như array khi mình gọi hàm find, dạng như
		/* $user = $this->User->find('first', array(
			'limit' => 20,
			'order' => 'username ASC',
			//'conditions' => array([...]),
		)); */
		$users = $this->paginate('User');
		$this->set(array(
			'users' => $users,
		));
	}

	public function admin_view($id) {

		$user = $this->User->find('first', array(
			'conditions' => array('User.id' => $id),
		));
		// hoặc cách sau (dùng cho trường hợp tìm data theo id)
		// $this->User->id = $id;
		// $user = $this->User->read();
		$this->set(array(
			'user' => $user,
		));
	}

	function admin_add() {
		// $this->data là 1 mảng đặc biệt, nó chứa tất cả dữ liệu (data)
		// được submit từ form người dùng (khi mình nhấn submit ngoài web)
		// dĩ nhiên là trong $_POST cũng có, nó nằm trong $_POST['data']
		// nhưng mình ưu tiên dùng $this->data theo CAKE
		if (!empty($this->data)) {
			$this->User->set($this->data); // bỏ data vào đối tượng User
			$invalidFields = $this->User->invalidFields(); // lấy ra các trường không hợp lệ

			if (empty($invalidFields)) { // không có trường nào không hợp lệ

				// save User
				$this->User->save();
				// tạo thông báo thành công
				// http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html#creating-notification-messages
				$this->Session->setFlash(__('users.addNew.success'), 'default', array('class' => 'message success'));
				// chuyển về trang danh sách
				$this->redirect('/users');
			}
		} else {
			// không làm gì cả
		}
	}

	function admin_edit($id) {
		if (!empty($this->data)) { // nếu có dữ liệu từ người dùng truyền vào => lưu
			$this->User->set($this->data);
			$invalidFields = $this->User->invalidFields();

			if (empty($invalidFields)) {

				$this->User->save();
				$this->Session->setFlash(__('users.addNew.success'), 'default', array('class' => 'message success'));
				$this->redirect('/users');
			}

		} else { // không có dữ liệu người dùng truyền vào => đọc
			// đọc dữ liệu User từ database bỏ vào $this->data
			// $this->data sẽ tự động truyền ra View và gán vào model User
			$this->User->id = $id;
			$this->data = $this->User->read();
			if (empty($this->data)) { // dữ liệu từ database rỗng => $id sai
				$this->Session->setFlash(__('users.index.noUser'));
				$this->redirect('/users');
			}
		}
	}

}